iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

順序結構(sequence structure)

→從上到下依次執行,排在前面的先執行,排在後面的後執行

選擇性結構(selection structure)

→包括 if、switch

if 條件句

第一種:

if(判斷條件)
{
     敘述主體;
}

https://ithelp.ithome.com.tw/upload/images/20230924/20163139jWetXXLIFa.png

第二種:

if(判斷條件)
{
     敘述主體A;
}
else
{
     敘述主體B;
}

https://ithelp.ithome.com.tw/upload/images/20230924/20163139WN0Br6sQxU.png

第三種:

if(判斷條件)
{
     敘述主體A;
}
else if(判斷條件)
{
     敘述主體B;
//可以有多個else if 語句 最後的else 也可以省略
}else
{
		
		 敘述主體C;
}

https://ithelp.ithome.com.tw/upload/images/20230924/201631398AjMGWILud.png

巢狀 if 敘述:

if(判斷條件1)
{
  if(判斷條件2)
  {
     敘述主體;
  }
  ...
  其它敘述;
}

https://ithelp.ithome.com.tw/upload/images/20230924/20163139H6nsuXysoO.png

下面我們來用舉一些例子讓大家更清楚是如何使用if條件句:

public class IfDemo {
	
	public static void main(String[] args) {
		
		int age = 30;
		if(age > 18) {
			System.out.println("已經成年囉!");
		}
	}
}
public class IfDemo {
	
	public static void main(String[] args) {
		
		int age = 30;
		if(age > 18) {
			System.out.println("已經成年囉!");
		}else {
			System.out.println("還沒成年喔!");
		}
	}
}
public static void main(String[] args) {
		
		int age = 30;
		if(age >= 30 ) {
			System.out.println("已經30歲囉!");
	
		}else if(age > 20) {
			System.out.println("已經成年囉!");
			
		}else {
			System.out.println("還沒成年喔!");
		}
	}

假如if、 else if、 else 後面的敘述句只有一句可以省略大括號{},但為了有更好的可讀性建議不省略

注意:使用if…else語句時,一定要先處理包含範圍較小的情況

否則就會出現以下情況

錯誤:

public class IfErrorDemo {
	public static void main(String[] args) {
		int age = 45;
		if(age > 20) {
			System.out.println("青年人");
		}else if(age > 40) {
			System.out.println("中年人");
		}else if(age > 60) {
			System.out.println("老年人");
		}
	}
}
//會印出青年人,不是想要的結果

上面的程式碼表面上沒有任何問題:人的年齡大於20 歲是青年人、大於40歲是中年人、大於60歲是老年人,但實際運行上會印出青年人,而實際的判斷應該是中年人

對於任何if else 語句 表面上else沒有任何條件 , 或是 else if 有一個條件 ,但因為else的含義是『否則』 else 本身就是一個條件,就是把前面的條件取反。因此,把上面的程式碼改寫成下面的形式

public class IfErrorDemo2 {

	public static void main(String[] args) {
		
		int age = 45;
		if(age > 20) {
			System.out.println("青年人");
		}
		//在原本的if條件中增加了else的隱含條件
		else if(age > 40 && !(age > 20)) {
			
			System.out.println("中年人");
			
		}else if(age > 60 && !(age > 20) && !(age > 40 && !(age > 20))) {
			
			System.out.println("老年人");
		}
	}

}

這樣就比較清楚為什麼上面發生錯誤了,又可以改寫成age > 40 && age <= 20 這樣就永遠不會發生了,所以這個這個程式碼永遠不會判斷中年人跟老年人的條件

為了達到真正的目的要把程式改成下面的形式:

public class IfCorrectDemo {

	public static void main(String[] args) {
		
		int age = 45;
		if(age > 60) {
			System.out.println("老年人");
		}else if(age > 40) {
			System.out.println("中年人");
		}else if(age > 20) {
			System.out.println("青年人");
		}
	
	}

}

所以age > 60 和 age >20 ,明顯 age > 60 的範圍較小,所以要先處理 age > 60 的情況

switch 條件句

switch(判斷表達){

	case 判斷條件1:
	{
		敘述主體;
		break;
	}
	case 判斷條件2:
	{
		敘述主體;
		break;
	}
	case 判斷條件3:
	{
		敘述主體;
		break;
	}
.....
	case 判斷條件N:
	{
		敘述主體;
		break;
	}
	default:
	{
		敘述主體;
	}
}

https://ithelp.ithome.com.tw/upload/images/20230924/20163139MDvmCSa43i.png

  1. expression 可以是 byte、short、int、char 資料類型,而從 Java 7 開始支援 String 資料類型,還有列舉類型(之後會提到),不能是boolean 類型
  2. case 語句中的值的數據類型必須與 case 中要比較的資料值數據類型相同,不相同無法比較,編譯器會報錯。
  3. 順序: 先對expression 求值 ,然後依次匹配判斷條件1、判斷條件2 ….判斷條件N 等,每個 case 後面跟緊跟著一個要比較的資料值和冒號。冒號後面則是當條件成立時,才會執行的程式區塊,直到 break 語句出現才會跳出 switch 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現 break 語句。
  4. 執行一個預設default 區塊程式,且該語句通常寫在最後且不需要 break 語句。預設 default 也可省略,但建議最好實作 default 語句。
  5. 因為開始點和結束點很清楚所以可以省略大括號
public class SwitchCaseDemo {

	public static void main(String[] args) {
		
		char score = 'A';
		switch(score) {
			
			case 'A':
				System.out.println("優");
				break;
			case 'B':
				System.out.println("甲");
				break;
			case 'C':
				System.out.println("乙");
				break;
			case 'F':
				System.out.println("丁");
				break;	
			default:
				System.out.println("成績輸入錯誤");
		}

	}

}

今天就先介紹到這邊囉!


上一篇
Day8-運算式、運算子
下一篇
Day 10 迴圈
系列文
玩轉Java:從基礎打造你的程式超能力30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言